package 链表;

/**
 * https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/
 * @author 会玩的洋洋
 *
 */

public class _83_删除排序链表中的重复元素 {
	
	/**
	 * 一次遍历
	 * @param head
	 * @return
	 */
	 public ListNode deleteDuplicates(ListNode head){
		 
	    if(head == null || head.next == null) {
            return head;
        }
	    ListNode node = head;
	    while(node != null && node.next != null){
	        if(node.val == node.next.val) {
                node.next = node.next.next;
            } else {
                node = node.next;
            }
	    }
	    return head;
	 }
	 /**
      *   双指针 即  前后指针 当值相等时，将前边的指针指向其下一个  后一个指针的下一个再指向前边的指针
	  * @param head 目标链表
	  * @return ListNode
	  */
	 public ListNode deleteDuplicates2(ListNode head) {
		 if(head == null || head.next == null){
	            return head;
	        }
	        ListNode p = head;
	        ListNode q = p.next;
	        while (q != null) {
	            if (q.val == p.val) {
	                q = q.next;
	                p.next = q;
	            } else {
	                p = q;
	                q = p.next;
	            }
	        }
	        return head;
	 }
	 
}
